#include <stack>
using namespace std;
class MinStack
{
public:
    stack<int> a;
    stack<int> min;
    MinStack()
    {
    }

    void push(int val)
    {
        a.push(val);
        if (min.empty() || val <= min.top())
        {
            min.push(val);
        }
    }

    void pop()
    {
        int tmp = a.top();
        a.pop();
        if (tmp == min.top())
        {
            min.pop();
        }
    }

    int top()
    {
        return a.top();
    }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
    int getMin()
    {
        return min.top();
    }
};